home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 4: GNU Archives / Linux Cubed Series 4 - GNU Archives.iso / gnu / fontutil.6 / fontutil / fontutils-0.6 / limn / ChangeLog < prev    next >
Encoding:
Text File  |  1992-10-27  |  57.9 KB  |  1,645 lines

  1. Tue Oct 27 13:02:14 1992  Karl Berry  (karl@cs.umb.edu)
  2.  
  3.     * Version 0.6.
  4.  
  5. Sun Oct 25 14:22:34 1992  Karl Berry  (karl@cs.umb.edu)
  6.  
  7.     * output-bzr.c (bzr_output_char): No longer have BZR_CHAR_... macros.
  8.  
  9. Mon Oct  5 11:58:20 1992  Karl Berry  (karl@cs.umb.edu)
  10.  
  11.     * curve.c (print_curve): New param `print_t' to say whether to
  12.     print t values.
  13.         * curve.h: Change decl.
  14.         * fit.c: Change calls.
  15.  
  16.     * xserver.c: Doc fix.
  17.  
  18. Sun Sep  6 16:46:27 1992  Karl Berry  (karl@hayley)
  19.  
  20.         * display.c (x_output_char): call getchar, not scanf.
  21.  
  22. Thu Sep  3 09:31:10 1992  Karl Berry  (karl@hayley)
  23.  
  24.         * Version 0.5.
  25.  
  26. Sun Aug 23 13:35:21 1992  Karl Berry  (karl@hayley)
  27.  
  28.         * main.c (USAGE): mention `cmr10.300' as a valid input name.
  29.  
  30. Mon Jul 27 14:51:43 1992  Karl Berry  (karl@hayley)
  31.  
  32.         * main.c (read_command_line): rename `-display' to `-do-display'.
  33.  
  34.         * display.c (get_server_info): give a better fatal message if
  35.           DISPLAY is not set.
  36.  
  37. Fri Jul 24 08:04:42 1992  Karl Berry  (karl@hayley)
  38.  
  39.         * fit.c: doc fixes.
  40.  
  41. Thu Jul 23 16:34:31 1992  Karl Berry  (karl@hayley)
  42.  
  43.         * fit.c, main.c (USAGE): doc fixes.
  44.  
  45. Wed Jul 22 16:45:38 1992  Karl Berry  (karl@hayley)
  46.  
  47.         * fit.c: (fit_with_least_squares): do tangent computation and t
  48.           initialization here.
  49.         (fit_curve): not here.
  50.  
  51. Sat Jul 18 16:02:55 1992  Karl Berry  (karl@hayley)
  52.  
  53.         * main.c (main): call extend_filename properly.
  54.  
  55. Wed Jul 15 09:29:55 1992  Karl Berry  (karl@hayley)
  56.  
  57.         * doc fixes.
  58.  
  59. Fri Jun  5 09:20:08 1992  Karl Berry  (karl@hayley)
  60.  
  61.         * main.c (main): `return 0' instead of `exit (0)'.  (From Paul Eggert)
  62.  
  63. Mon Jun  1 16:27:06 1992  Karl Berry  (karl@hayley)
  64.  
  65.         * main.c (main): open the logging file before initializing the
  66.           display.
  67.  
  68. Fri May 29 11:45:19 1992  Karl Berry  (karl@hayley)
  69.  
  70.         * main.c (main): change return type to `int'.
  71.  
  72. Sun May 24 08:54:53 1992  Karl Berry  (karl@hayley)
  73.  
  74.         * display.[ch], main.c (display_stop): change `-display-stop' to
  75.           `-display-continue'.
  76.  
  77. Mon May 18 17:59:51 1992  Karl Berry  (karl@hayley)
  78.  
  79.         * GNUmakefile (dist): new target.
  80.  
  81. Thu May 14 06:40:47 1992  Karl Berry  (karl@hayley)
  82.  
  83.         * GNUmakefile (install): app_defaults_dir -> app-defaults.
  84.  
  85. Mon Apr 20 12:57:31 1992  Karl Berry  (karl@hayley)
  86.  
  87.         * main.c (main): remove any suffix from the input fontname before
  88.           generating the output name and log name.
  89.  
  90. Wed Apr 15 15:27:17 1992  Karl Berry  (karl@hayley)
  91.  
  92.         * output-bzr.c (bzr_start_output): `make_output_filename' is now
  93.           `extend_filename'.
  94.  
  95. Sun Apr 12 09:51:48 1992  Karl Berry  (karl@hayley)
  96.  
  97.         * fit.c (fit_one_spline): only give up if the denominator is truly
  98.           zero, not within REAL_EPSILON zero.
  99.  
  100.         * fit.c (fit_one_spline): move the vectorization of the start and
  101.           end points out of the loop.
  102.  
  103. Wed Apr  1 15:24:56 1992  Karl Berry  (karl at hayley)
  104.  
  105.         * pxl-outline.c: remove edge routines; include edge.h.
  106.  
  107. Mon Mar 30 07:12:41 1992  Karl Berry  (karl at hayley)
  108.  
  109.         * fit.c (*_KNEE): parenthesize && in ||.
  110.         (ONLY_ONE_LESS): likewise.
  111.  
  112. Sun Mar 29 19:03:47 1992  Karl Berry  (karl at hayley)
  113.  
  114.         * main.c (read_command_line): remove empty else.
  115.  
  116.         * fit.c (fit_with_least_squares): cast ptr args to printf.
  117.         (JOIN): parenthesize && in ||.
  118.         (ONLY_ONE_ZERO): likewise.
  119.         * curve.c (log_curve): cast ptr arg to printf.
  120.  
  121. Sat Mar 28 07:49:16 1992  Karl Berry  (karl at hayley)
  122.  
  123.         * Version 0.4.
  124.  
  125.         * Change copyright years to 1992 only.
  126.  
  127. Tue Mar 10 15:01:49 1992  Karl Berry  (karl at hayley)
  128.  
  129.         * main.c (USAGE): separate out GETOPT_USAGE.
  130.  
  131. Tue Mar 10 14:02:28 1992  Kathy Hargreaves  (kathy at hayley)
  132.  
  133.         * main.c (main): set output_name to font_basename if the former is
  134.           NULL.  Call bzr_start_output with output_name instead of
  135.           font_basename. 
  136.  
  137. Sat Mar  7 13:26:07 1992  Kathy Hargreaves  (kathy at hayley)
  138.  
  139.         * output_bzr.c (bzr_start_output): changed FONT_NAME to OUTPUT_NAME;
  140.           call make_output_filename on concatenation of it and ".bzr".
  141.  
  142.         * main.c [USAGE]: added output-file.
  143.           (read_command_line): added output-file option.
  144.  
  145.         * output-bzr.[ch]: added output_name.
  146.  
  147. Sat Mar  7 09:13:24 1992  Karl Berry  (karl at hayley)
  148.  
  149.         * GNUmakefile (libraries): define again.
  150.         (files, headers, sources): replace with `c_and_h', etc.
  151.  
  152.         * display.c (digitize_spline): use puts instead of printf.
  153.  
  154. Wed Mar  4 08:02:13 1992  Karl Berry  (karl at hayley)
  155.  
  156.         * GNUmakefile (libraries): remove.
  157.  
  158.         * display.[ch] (server_identity, get_client_identity): these do not
  159.           need to be public.
  160.         (get_server_info): take the identity as an arg; change callers.
  161.  
  162.         * xserver.c (start_server) [STANDALONE_SERVER]: set geometry_args
  163.           to window_size after reading command line.
  164.  
  165.         * xserver.c (CLASS_NAME): change to `Limn'.
  166.  
  167.         * display.c [!STANDALONE_SERVER]: compile the server fork
  168.           conditionally.
  169.  
  170. Tue Mar  3 11:47:49 1992  Karl Berry  (karl at hayley)
  171.  
  172.         * display.[ch], xserver.[ch]: changes from Erik Wallin for a
  173.           better way of finding the server.
  174.         * GNUmakefile (display.o): remove special target; make the default
  175.           to fork.
  176.         (xserver): new target for debugging.
  177.  
  178. Sat Feb  8 07:09:47 1992  Karl Berry  (karl at hayley)
  179.  
  180.         * GNUmakefile (need_X_libraries): define this.
  181.  
  182. Fri Jan 31 16:49:29 1992  Karl Berry  (karl at hayley)
  183.  
  184.         * main.c (read_command_line): declare `option_index' (for new
  185.           getopt).
  186.  
  187.         * display.c (init.c) [FORK_SERVER]: do not declare fork.
  188.  
  189. Thu Jan  9 08:29:29 1992  Karl Berry  (karl at hayley)
  190.  
  191.         * *.c: do not include global.h.
  192.  
  193.         * *.h: remove #pragma once.
  194.  
  195. Wed Jan  8 15:26:35 1992  Karl Berry  (karl at hayley)
  196.  
  197.         * update copyright messages.
  198.  
  199.         * change `allocate to `xmalloc', `reallocate' to `xrealloc', and
  200.           `string_copy' to `strdup'.
  201.  
  202. Wed Oct  2 07:10:56 1991  Karl Berry  (karl at hayley)
  203.  
  204.         * output-bzr.c (bzr_start_output): omit needless `string_copy'.
  205.  
  206. Mon Aug  5 06:18:46 1991  Karl Berry  (karl at hayley)
  207.  
  208.         * GNUmakefile (program): change name to `limn'.
  209.  
  210. Tue Jul 30 13:19:12 1991  Karl Berry  (karl at ra.cs.umb.edu)
  211.  
  212.         * Version 0.3.
  213.  
  214. Fri Jul 26 10:22:48 1991  Karl Berry  (karl at hayley)
  215.  
  216.         * most files: rename `fit-outlines' to `limn'.
  217.  
  218.         * FitOutlines.ad: remove prefix.
  219.  
  220. Fri Jul 19 09:15:35 1991  Karl Berry  (karl at hayley)
  221.  
  222.         * pxl-outline.c (TRY_PIXEL): VALID_LOCATION has been renamed to
  223.           BITMAP_VALID_PIXEL.
  224.  
  225.         * GNUmakefile (install): rename fileinstall to INSTALLDATA; source
  226.           file is FitOutlines.ad.
  227.  
  228. Mon Jun 17 15:21:18 1991  Karl Berry  (karl at hayley)
  229.  
  230.         * output-bzr.c (most routines): change calls to PIXELS_TO_POINTS.
  231.  
  232. Sat Jun 15 09:49:25 1991  Karl Berry  (karl at hayley)
  233.  
  234.         * main.c: change `checked_fopen' to `xfopen'.
  235.  
  236. Sun Jun  9 11:03:37 1991  Karl Berry  (karl at hayley)
  237.  
  238.         * display.c: doc fix.
  239.  
  240. Thu Jun  6 07:25:54 1991  Karl Berry  (karl at hayley)
  241.  
  242.         * All files: change to version 2 of the GPL.
  243.  
  244. Sat Apr 13 09:42:15 1991  Karl Berry  (karl at hayley)
  245.  
  246.         * curve.c, fit.c, main.c, pxl-outline.c: doc fix.
  247.  
  248. Fri Apr 12 15:13:24 1991  Karl Berry  (karl at hayley)
  249.  
  250.         * GNUmakefile (files): remove `logreport'.
  251.  
  252. Wed Mar 13 17:15:56 1991  Karl Berry  (karl at hayley)
  253.  
  254.         * main.c (main): report `|' instead of of `(' when we finish
  255.           finding the outline, since we don't have matching `)' any more.
  256.  
  257.         * output-bzr.c (bzr_start_output): don't remove the design size
  258.           from the output name.
  259.  
  260. Tue Mar 12 06:41:21 1991  Karl Berry  (karl at hayley)
  261.  
  262.         * fit.c (filter): don't filter unless we have five points.
  263.  
  264.         * curve.c (print_curve): fix parentheses.
  265.  
  266. Mon Mar 11 09:27:20 1991  Karl Berry  (karl at hayley)
  267.  
  268.         * fit.c (fit_curve_list): only append the first point as the last
  269.           point if the curve is cyclic and the length is not three; if it
  270.           isn't, then it's already been done.
  271.  
  272.         * curve.c (print_curve): if the curve is short enough, print every
  273.           point.
  274.  
  275.         * fit.c (remove_adjacent_corners): new routine.
  276.         (find_corners): call it, and remove ad hoc checks for adjacent
  277.           corners. 
  278.  
  279.         * main.c (main): open a bitmap font only, instead of looking for
  280.           the TFM file, also.  Change calls as below.
  281.         * output-bzr.c (bzr_start_output): take a `bitmap_font_type', and don't
  282.           worry about the interword space.
  283.         * output-bzr.c (bzr_start_output): change the declaration.
  284.         * display.c (init_display): take a `bitmap_font_type'.
  285.         * display.h (bitmap_font_type): change the declaration.
  286.  
  287. Thu Mar  7 07:32:04 1991  Karl Berry  (karl at hayley)
  288.  
  289.         * Version 0.2.
  290.  
  291. Mon Feb 25 15:31:03 1991  Karl Berry  (karl at hayley)
  292.  
  293.         * output-bzr.c: change calls to `bzr_...' from `..._bzr_...'.
  294.  
  295. Sun Feb 24 19:59:18 1991  Karl Berry  (karl at ra.cs.umb.edu)
  296.  
  297.         * fit.c (fit_curve_list): only log the splines if `logging' is
  298.           nonzero.
  299.  
  300. Sun Feb 17 09:28:13 1991  Karl Berry  (karl at hayley)
  301.  
  302.         * fit.c (find_corners): don't let a point adjacent to an
  303.           already-chosen corner be a corner, even if its angle is less
  304.           than `corner_always_threshold'.
  305.  
  306.         * *.c: include config.h.
  307.  
  308. Sun Feb 10 09:03:40 1991  Karl Berry  (karl at hayley)
  309.  
  310.         * fit.c (find_corners): don't let points adjacent to
  311.           already-chosen corners be corners themselves.
  312.  
  313.         * pxl-outline.c (find_outline_pixels): set it according to whether
  314.           the starting edge was a top or bottom.
  315.         * pxl-outline.h (pixel_outline_type): new member `clockwise'.
  316.         (O_CLOCKWISE): new macro.
  317.         * curve.h (curve_list_type): likewise.
  318.         (CURVE_LIST_CLOCKWISE): and again.
  319.         * fit.c (remove_knee_points): pass clockwise as a parameter;
  320.           change caller. 
  321.  
  322. Sat Feb  9 10:33:16 1991  Karl Berry  (karl at hayley)
  323.  
  324.         * fit.c (clockwise_p, FIND_CHANGE_POINT): new definitions.
  325.         (remove_knees); handle clockwise and counterclockwise cases
  326.         differently. 
  327.  
  328.         * pxl-outline.c: doc fix.
  329.  
  330. Sun Feb  3 11:31:48 1991  Karl Berry  (karl at hayley)
  331.  
  332.         * pxl-outline.c (find_outline_pixels): log the information in the
  333.           right order.
  334.  
  335.         * fit.c (set_initial_parameter_values): log the entire curve.
  336.         * curve.c (log_entire_curve): new routine.
  337.         * curve.h (log_entire_curve): declare it.
  338.  
  339. Fri Feb  1 14:48:05 1991  Karl Berry  (karl at hayley)
  340.  
  341.         * fit.c (fit_curve_list): call `change_bad_lines' on each
  342.           individual curve, i.e., on the fitted splines between corners,
  343.           instead of once on the list for the entire outline.
  344.  
  345.         * fit.c (spline_linear_enough): log the final linearity.
  346.  
  347. Thu Jan 31 14:30:35 1991  Karl Berry  (karl at hayley)
  348.  
  349.         * fit.c (change_bad_lines): log more information.
  350.  
  351.         * fit.c (fit_curve_list): call `change_bad_lines' here, instead of
  352.           in `fit_with_least_squares'.
  353.  
  354. Wed Jan 30 16:56:45 1991  Karl Berry  (karl at hayley)
  355.  
  356.         * fit.c (align): log the information about splines changing.
  357.         (TRY_AXIS): Use an epsilon test for zero.
  358.  
  359. Tue Jan 29 10:09:32 1991  Karl Berry  (karl at hayley)
  360.  
  361.         * display.c (get_server_info): remove dead code.
  362.  
  363.         * fit.c (filter): don't use the alternate values if the vector sum is
  364.           zero in either direction.
  365.  
  366. Fri Jan 18 08:00:30 1991  Karl Berry  (karl at hayley)
  367.  
  368.         * fit.c (test_subdivision_point): don't subdivide at points which
  369.           are close to the endpoints.
  370.  
  371.         * logreport.h (LOG5): new macro.
  372.  
  373.         * fit.c (test_subdivision_point): new routine to test a single
  374.           point and update the `best' vector.
  375.         (UPDATE_BEST): new macro.
  376.         (JOIN_POINT): assume the parameters have already been fabs'd.
  377.         (find_subdivision): call test_subdivision_point (twice).
  378.  
  379. Thu Jan 17 08:15:46 1991  Karl Berry  (karl at hayley)
  380.  
  381.         * fit.c (find_curve_vectors): return only one count, since they
  382.           are the same now.
  383.  
  384.         * fit.c (filter): put the filtered points into a separate curve,
  385.           instead of back into the original; append the first and last
  386.           points separately.
  387.  
  388.         * fit.c (find_curve_vectors): correct off-by-one error in making
  389.           sure that we don't use more points after the point than before.
  390.  
  391.         * main.c (main): remove the report of the spline count.
  392.         * fit.c (fitted_splines, fit_curve): report the totals here.
  393.  
  394.         * fit.h (align_threshold): declare it.
  395.  
  396.         * fit.c (TRY_AXIS): new macro.
  397.         (align): test both the x and y axes.
  398.  
  399. Tue Jan 15 11:31:56 1991  Karl Berry  (karl at hayley)
  400.  
  401.         * pxl-outline.h (O_PREV): define so as not to need casts to int.
  402.  
  403.         * fit.h (fitted_splines): declare to return a spline_list_array.
  404.         * main.c (main): change call of fitted_splines; call
  405.           free_spline_list_array instead of free_spline_list.  Calls to
  406.           x_output_char and bzr_output_char also change.
  407.         * output-bzr.[ch] (bzr_output_char): change definition and declaration.
  408.         * display.[ch] (x_output_char): likewise.
  409.  
  410.         * fit.c (fit_curve_list): append the first point as the last
  411.           point here.
  412.  
  413.         * curve.h (CURVE_LIST_LENGTH, CURVE_LIST_ELT,
  414.           LAST_CURVE_LIST_ELT): new macros.
  415.  
  416.         * curve.h (curve_list_array_type): new type.
  417.         (CURVE_LIST_ARRAY_LENGTH, CURVE_LIST_ARRAY_ELT,
  418.          LAST_CURVE_LIST_ARRAY_ELT): new macros.
  419.         (new_curve_list_array, free_curve_list_array, append_curve_list):
  420.          declare new routines, and define them in curve.c.
  421.  
  422.         * fit.c (fit_curve_list): new routine to do most of what
  423.           `fitted_splines' did.  
  424.         (fit_splines): rename to `fit_curve'.
  425.         (fitted_splines): now control a list of curve_lists, instead of
  426.          just a curve_list; similarly, return a list of spline_lists.
  427.         (split_at_corners): return a list of curve_lists.
  428.         
  429. Sun Jan 13 16:47:05 1991  Karl Berry  (karl at hayley)
  430.  
  431.         * main.c (read_command_line): set `explicit_dpi'.
  432.  
  433. Tue Jan  8 09:55:32 1991  Karl Berry  (karl at hayley)
  434.  
  435.         * fit.c (split_at_corners): append the first point as the last
  436.           point also, if the curve is cyclic.  No, rescind that, and
  437.           append the point after filtering, in `fit_splines'.
  438.         * curve.c (append_point): new routine.
  439.         * curve.h (append_point): declare it.
  440.  
  441.         * fit.c, fit.h, main.c: remove filter-secondary-surround.
  442.  
  443.         * fit.c (spline_linear_enough): use the curve length squared,
  444.           instead of the curve length, so that shorter curves are more
  445.           likely to be reverted.
  446.         * main.c (USAGE): fix documentation.
  447.  
  448.         * fit.c (subdivide_search): Since we don't want to search equally
  449.           far on all curves, make this a percentage instead of an absolute
  450.           number.
  451.         (find_subdivision): use the new parameter to compute the old.
  452.         * fit.h (subdivide_search): declare as a real, instead of int.
  453.         * main.c (read_command_line, USAGE): likewise.
  454.  
  455. Mon Jan  7 09:16:16 1991  Karl Berry  (karl at hayley)
  456.  
  457.         * fit.c (change_bad_lines): don't change the cubic back to a line
  458.           if its linearity is < line_reversion_threshold.
  459.         (spline_linear_enough): save the distance from the line.
  460.         (fit_with_line): initialize the linearity to zero.
  461.         * fit.h: declare line_reversion_threshold.
  462.         * main.c (read_command_line, USAGE): new option.
  463.  
  464.         * fit.c (filter): don't use filter-secondary-surround at all.
  465.  
  466.         * fit.c (find_curve_vectors): make sure we use the same number of
  467.           points on either side of the candidate.
  468.  
  469.         * fit.c (FILTER_ASSIGN): new macro, to change the filter
  470.         information.
  471.  
  472.         * fit.c (filter): if the angle using filter_alternative_surround
  473.           points is more than filter_epsilon different from the normal
  474.           one, use it instead.  Also, take neighbor_percent as a
  475.           (global) parameter, instead of computing it based on
  476.           filter_power.  Also, only use the secondary information if its
  477.           angle is nonzero.
  478.         * main.c (read_command_line): new options:
  479.           filter-alternative-surround, filter-percent, filter-epsilon.
  480.           Remove filter-power.
  481.         * fit.h: declare them.
  482.  
  483. Wed Jan  2 05:42:11 1991  Karl Berry  (karl at hayley)
  484.  
  485.         * main.c: doc fix.
  486.  
  487. Tue Jan  1 14:07:57 1991  Karl Berry  (karl at hayley)
  488.  
  489.         * pxl-outline.c (append_coordinate): append the corner of the
  490.           pixel in a counterclockwise orientation, instead of clockwise.
  491.  
  492. Sun Dec 30 09:56:59 1990  Karl Berry  (karl at hayley)
  493.  
  494.         * fit.c (filter_power): new global parameter.
  495.         * fit.h (filter_power): declare it.
  496.         * main.c (read_command_line): new option, `filter-power'.
  497.         (USAGE): describe it.
  498.  
  499. Sat Dec 29 11:02:37 1990  Karl Berry  (karl at hayley)
  500.  
  501.         * pxl-outline.c (next_outline_edge): reimplement to go
  502.           counterclockwise on outside edges.
  503.           (TRY_PIXEL, COMPUTE_DELTA, COMPUTE_ROW_DELTA, COMPUTE_COL_DELTA,
  504.           FIND_TEST_EDGE): new macros to help.
  505.           (direction_type): new type, for the ways in which we can move.
  506.  
  507. Thu Dec 27 10:12:12 1990  Karl Berry  (karl at hayley)
  508.  
  509.         * pxl-outline.c (NUM_EDGES): define to be `no_edge', instead of
  510.           using sizeof.
  511.  
  512. Wed Dec 26 15:15:55 1990  Karl Berry  (karl at hayley)
  513.  
  514.         * pxl-outline.c (edge_type): change values so that we will return
  515.           them in a counterclockwise direction.
  516.  
  517.         * pxl-outline.c (edge_names): move declaration to top of file, and
  518.           rename to `edge_name'; remove the routine `edge_name'.
  519.         (mark_edge): use edge_name as an array instead of a routine.
  520.  
  521.         * fit.c (fit_with_least_squares): use MAXFLOAT and MINFLOAT,
  522.           instead of MAXDOUBLE and MINDOUBLE, since Sun's atof can't deal
  523.           with the latter.
  524.  
  525. Wed Dec 19 07:14:24 1990  Karl Berry  (karl at hayley)
  526.  
  527.         * output-bzr.c (bzr_start_output): don't output the day of the
  528.           week in the comment.
  529.  
  530. Tue Dec 18 16:24:27 1990  Karl Berry  (karl at hayley)
  531.  
  532.         * output-bzr.c (bzr_start_output): convert the interword space to
  533.           points, scaled by the design size.
  534.  
  535. Sun Dec  9 15:15:19 1990  Karl Berry  (karl at hayley)
  536.  
  537.         * GNUmakefile (files): remove metafont.
  538.         * main.c (main): don't call the mf_... routines.
  539.         (USAGE, read_command_line): remove the `-metafont' option.
  540.  
  541. Sat Dec  8 10:30:03 1990  Karl Berry  (karl at hayley)
  542.  
  543.         * fit.c (find_tangent): new parameter, `cross_curve', which says
  544.           whether we use points on the adjacent curve or not.
  545.         (fit_splines): send cross_curve as false.
  546.         (fit_with_least_squares): send cross_curve as true, and rearrange
  547.         how left_curve and right_curve are set up.  For one thing, set the
  548.         NEXT_CURVE and PREVIOUS_CURVE links.
  549.  
  550.         * metafont.c (mf_output_char): output a newline after each spline.
  551.  
  552.         * fit.c: doc fixes.
  553.  
  554. Sat Dec  1 17:12:55 1990  Karl Berry  (karl at hayley)
  555.  
  556.         * main.c (main): call init_display before opening any output files.
  557.  
  558. Mon Nov 19 07:57:04 1990  Karl Berry  (karl at hayley)
  559.  
  560.         * display.c (display_grid_size): doc fix.
  561.         * main.c (USAGE): ditto.
  562.  
  563. Sat Nov 17 10:41:22 1990  Karl Berry  (karl at hayley)
  564.  
  565.         * display.c [STANDALONE_SERVER]: use `FORK_SERVER' instead, to
  566.           avoid two `main's being defined.
  567.  
  568.         * GNUmakefile (files): remove `postscript'; we have another
  569.           program (bzrto) to do this.
  570.         * main.c: do not include postscript.h.
  571.         (main): don't call ps_start_output et al.
  572.  
  573.         * main.c, metafont.c: include file-open.h.
  574.  
  575.         * display.c (digitize_spline): use the length of the bounding
  576.           rectangle to compute the step size instead of the distance from
  577.           the starting point to the ending point.
  578.  
  579.         * fit.c (set_initial_parameter_values, reparameterize,
  580.           find_error): use distance instead of hypot.
  581.  
  582.         * display.c (digitize_spline): avoid dividing by zero in the case
  583.           of one-pixel splines.
  584.  
  585. Fri Nov 16 06:51:21 1990  Karl Berry  (karl at hayley)
  586.  
  587.         * fit.c (the globals): say (-<argument>), not (+<argument>), since
  588.           getopt has changed.
  589.  
  590.         * display.c (GRID_INTERVAL, PIXEL_EXPANSION, RECTANGLE_SIZE): make
  591.           these variables (as signed integers, since we do arithmetic that
  592.           might wind up as negative numbers on them), instead of macros.
  593.         * display.h: declare them.
  594.         * main.c (read_command_line): new options to set them.
  595.  
  596. Thu Nov 15 14:42:53 1990  Karl Berry  (karl at hayley)
  597.  
  598.         * xserver.c (foserver_exit): exit (0) after closing display.
  599.  
  600.         * xserver.h (start_server): declare it.
  601.  
  602.         * GNUmakefile (files): add `xserver'.
  603.  
  604. Tue Nov 13 09:06:21 1990  Karl Berry  (karl at hayley)
  605.  
  606.         * display.c (get_server_info): don't receive any events after we
  607.           find our server. 
  608.  
  609.         * display.c (send_event): new routine to send an event to our
  610.           server.  Call it in close_display and x_output_char.
  611.  
  612.         * display.c (get_server_info): use the grandchild of the window we
  613.           receive the event on, i.e., the label widget, instead of the
  614.           child, which is the viewport.
  615.  
  616.         * display.c (get_server_info): use our own connection to the
  617.           server.
  618.           (close_display): close our connection.
  619.  
  620.         * xserver.h (CLASS_NAME): define this here, so that the server can
  621.           use it; whoops, may as well put it in xserver.c.
  622.  
  623.         * xserver.h: new file, for the message atoms.
  624.  
  625.         * GNUmakefile (CFLAGS): add -DSTANDALONE_SERVER (for testing).
  626.  
  627. Mon Nov 12 12:05:42 1990  Karl Berry  (karl at hayley)
  628.  
  629.         * display.c: send messages to a server instead of doing the
  630.           drawing directly.  This means sending a ClientMessage event
  631.           before waiting for RET, and an event to exit.
  632.  
  633. Wed Oct 24 14:58:52 1990  Karl Berry  (karl at aten)
  634.  
  635.         * Version 0.0.
  636.  
  637. Tue Oct 23 08:55:00 1990  Karl Berry  (karl at hayley)
  638.  
  639.         * GNUmakefile (install): install the app-defaults file.
  640.  
  641.         * display.c (display_negative, display_descender): these options
  642.           are obsolete now.
  643.         * display.h: remove declarations.
  644.         * main.c (read_command_line): remove assignments and documentation.
  645.  
  646.         * display.c (x_start_char): make the width and height 1 more than
  647.           the bitmap's width and height, not two.  Also increase the
  648.           offset_bb's MAX_ROW and MIN_COL by 1.  [No, we have to go back
  649.           to increasing by 2.]
  650.  
  651.         * display.c (init_display): make the internal width and height of
  652.           the label be PIXEL_EXPANSION.  [No, let's assign it in the
  653.           defaults file instead of in the code.]
  654.  
  655. Mon Oct 22 07:18:38 1990  Karl Berry  (karl at hayley)
  656.  
  657.         * display.c (x_start_char): add two (* PIXEL_EXPANSION) to the
  658.           width and height of the pixmap.
  659.  
  660.         * display.c (x_output_char): process more pending events after
  661.           flushing the output buffer.
  662.  
  663. Sun Oct 21 15:55:49 1990  Karl Berry  (karl at hayley)
  664.  
  665.         * display.c (x_start_char): make the gc's foreground be 0 to start
  666.           with, since we want to blank the pixmap before doing anything
  667.           else.
  668.  
  669.         * display.c (x_output_char): process pending events before
  670.           prompting the user to continue.
  671.  
  672.         * display.c (init_display): remove no_args and zero, since we can
  673.           pass NULL and 0, no, I'm wrong, have to have zero.
  674.  
  675.         * GNUmakefile (libraries): add gnuw.
  676.  
  677.         * display.c (init_display): transposed arguments to
  678.           XtCreateWidget.
  679.  
  680. Sat Oct 20 08:43:30 1990  Karl Berry  (karl at hayley)
  681.  
  682.         * display.c: change to use the Label widget's pixmap for drawing;
  683.           this affects almost every procedure.
  684.         (init_display): set up the widget hierarchy.
  685.         (x_start_char): take the character as an argument.
  686.         * display.h (x_start_char): change the prototype.
  687.         * main.c (main): change the call.
  688.  
  689.         * display.c: remove R3 stuff.
  690.  
  691. Sun Oct 14 17:10:02 1990  Karl Berry  (karl at hayley)
  692.  
  693.         * main.c (read_command_line): use FINISH_COMMAND_LINE.
  694.  
  695. Fri Sep 28 09:33:13 1990  Karl Berry  (karl at hayley)
  696.  
  697.         * main.c: include "getopt.h", not <getopt.h>.
  698.  
  699.         * output-bzr.c (bzr_start_output): doc fix.
  700.  
  701.         * pxl-outline.c (append_outline_pixel): subtract one from O_LENGTH
  702.         when assigning the new element.
  703.  
  704. Thu Sep 27 17:51:04 1990  Karl Berry  (karl at hayley)
  705.  
  706.         * main.c (read_command_line): return NULL at the end to avoid a
  707.         gcc warning.
  708.         * pxl-outline.c (is_outline_edge): similarly.
  709.  
  710.         * output-bzr.c (bzr_start_output): remove unused variable
  711.         `dpi_real'.
  712.  
  713. Sat Sep  8 10:33:34 1990  Karl Berry  (karl at hayley)
  714.  
  715.         * report.[hc]: rename to logreport.[hc], and include report.h.
  716.         * (almost all files): upcase `report*' and `log*'.
  717.  
  718.         * main.c (main): use the basename of the font for opening the
  719.         output files.
  720.  
  721.         * main.c (read_command_line): remove any suffix on the font name
  722.         before returning it.
  723.  
  724.         * main.c (read_command_line): use GET_RANGE.
  725.  
  726. Wed Sep  5 06:19:15 1990  Karl Berry  (karl at hayley)
  727.  
  728.         * main.c (USAGE): doc fix in explanation of -range.
  729.  
  730. Mon Sep  3 17:02:10 1990  Karl Berry  (karl at hayley)
  731.  
  732.         * pxl-outline.c (append_outline_pixel): use O_LENGTH.
  733.  
  734. Tue Aug 28 18:18:19 1990  Kathy Hargreaves  (letters at claude)
  735.  
  736.         * display.c: include main.h.
  737.  
  738. Tue Aug 21 17:41:43 1990  Karl Berry  (karl at hayley)
  739.  
  740.         * report.c (verbose): doc fix -- +v isn't an option anymore.
  741.  
  742.         * main.c (USAGE): explain option syntax better.
  743.  
  744. Tue Jul 24 13:06:07 1990  Karl Berry  (karl at hayley)
  745.  
  746.         * output-bzr.c (bzr_start_output): don't convert the design size
  747.         from pixels to points.
  748.         * display.c (init_display): convert the design size from points to
  749.         pixels.
  750.         * postscript.c (ps_start_output): ditto.
  751.  
  752. Sun Jul 22 09:39:04 1990  Karl Berry  (karl at hayley)
  753.  
  754.         * display.c: don't include <X11/Xlib.h>, it's done for us.
  755.  
  756. Sat Jul 21 07:39:24 1990  Karl Berry  (karl at hayley)
  757.  
  758.         * output-bzr.c (bzr_start_output): convert `dpi' to a double
  759.         before using PIXELS_TO_POINTS.
  760.  
  761.         * display.c: remove the `my_' prefix from variables.
  762.  
  763. Mon Jul 16 06:28:16 1990  Karl Berry  (karl at hayley)
  764.  
  765.         * main.c (read_command_line): remove the `v' option.
  766.  
  767. Fri Jul 13 16:59:22 1990  Karl Berry  (karl at hayley)
  768.  
  769.         * postscript.c (ps_init_encoding): use the filename we got back
  770.         from find_path_filename.
  771.  
  772. Sat Jul  7 08:09:04 1990  Karl Berry  (karl at hayley)
  773.  
  774.         * main.c (GET_PERCENT): move to global.h.
  775.  
  776.         * pxl-outline.c (next_outline_edge): improve the error message.
  777.  
  778. Fri Jul  6 11:23:46 1990  Karl Berry  (karl at hayley)
  779.  
  780.         * pxl-outline.c (find_outline_pixels): free the `marked' bitmap.
  781.  
  782. Thu Jul  5 06:41:49 1990  Karl Berry  (karl at hayley)
  783.  
  784.         * pxl-outline.c (find_outline_pixels): don't call any subroutines
  785.         unless the pixel is black.
  786.  
  787.         * main.c (read_command_line): explain the -range option better.
  788.  
  789. Wed Jul  4 12:03:34 1990  Karl Berry  (karl at hayley)
  790.  
  791.         * pxl-outline.c (append_pixel_outline): use the O_LIST_LENGTH macro.
  792.  
  793. Sun Jul  1 06:57:20 1990  Karl Berry  (karl at hayley)
  794.  
  795.         * postscript.c (start_postscript_output): remove the code that
  796.         changes the name based on `oblique_angle'.
  797.  
  798. Tue Jun 26 13:43:25 1990  Karl Berry  (karl at hayley)
  799.  
  800.         * main.c (main): remove call to oblique_splines.
  801.         (read_command_line): remove `oblique-angle' option.
  802.         GNUmakefile (files): remove oblique from the list.
  803.  
  804. Sat Jun 23 11:50:28 1990  Karl Berry  (karl at hayley)
  805.  
  806.         * main.c (main): increase the character bounding box after finding
  807.         the outline.
  808.  
  809.         * pxl-outline.c (find_one_outline): add the left side bearing
  810.         (somehow this got removed since June 4), and correct the
  811.         conversion of the y-coordinates to Cartesian.
  812.  
  813. Fri Jun 22 14:31:07 1990  Karl Berry  (karl at hayley)
  814.  
  815.         * report.c (verbose): both -v and -verbose set this variable.
  816.  
  817. Wed Jun 20 08:00:01 1990  Karl Berry  (karl at hayley)
  818.  
  819.         * main.c (read_command_line): the `help' option was out of order.
  820.  
  821.         * pxl-outline.c (append_coordinate): improve the error message.
  822.  
  823.         * main.h (font_name): remove declaration.
  824.         * main.c (font_name): change from a global to a local (of main).
  825.         (read_command_line): return the font name.
  826.         * postscript.c (find_ps_info): use the argument `sized_name'
  827.         instead of `font_name'.
  828.  
  829. Mon Jun  4 15:22:05 1990  Karl Berry  (karl at hayley)
  830.  
  831.         * fit.c (fit_with_least_squares): use MAXDOUBLE, instead of MAXFLOAT.
  832.  
  833.         * pxl-outline.c (find_one_outline): add the left side bearing to
  834.         all coordinates before we append them to the list.
  835.  
  836.         * output-bzr.c (output_bzr_char): convert all the numbers in the
  837.         spline list from pixels to points.
  838.  
  839. Sun Jun  3 06:30:22 1990  Karl Berry  (karl at hayley)
  840.  
  841.         * all .h files: use `(void)' in the prototypes where appropriate.
  842.  
  843.         * display.c (x_start_char): reinitialize before doing the horizontal
  844.         lines of the grid.
  845.  
  846.         * bzr-output.c (bzr_start_output): initialize bzr_name properly.
  847.  
  848. Sat Jun  2 07:42:46 1990  Karl Berry  (karl at hayley)
  849.  
  850.         * fit.c (fit_with_line, fit_with_least_squares): replace calls to
  851.         `log_spline' with calls to `print_spline'.
  852.  
  853.         * GNUmakefile (files): remove spline and vector; put those files
  854.         in kbase.
  855.  
  856. Thu May 31 19:43:16 1990  Karl Berry  (karl at aten)
  857.  
  858.         * curve.c (log_curve): don't try to log the tangents if they
  859.         haven't been set.
  860.  
  861. Wed May 30 16:47:18 1990  Karl Berry  (karl at hayley)
  862.  
  863.         * curve.c (free_curve_list): don't try to free the list if it was
  864.         empty.
  865.         * pxl-outline.c (free_pixel_outline_list): likewise.
  866.         * spline.c (free_spline_list): likewise.
  867.  
  868.         * display.c (x_start_char): don't go past the end of the array of
  869.         lines, even if the characters are huge.
  870.  
  871. Sat May 26 13:30:08 1990  Karl Berry  (karl at hayley)
  872.  
  873.         * fit.c (remove_knee_points): do not allow the previous point to
  874.         be a knee point, that just got removed.
  875.  
  876.         * pxl-outline.c (append_coordinate): log the coordinate.
  877.  
  878.         * fit.c (split_at_corners): log the total number of corners found
  879.         for each pixel outline (even if the number is zero).
  880.  
  881.         * curve.c (free_curve): don't free the curve unless the length is
  882.         > 0.
  883.  
  884. Fri May 25 19:34:31 1990  Karl Berry  (karl at claude)
  885.  
  886.         * report.c: include "global.h".
  887.  
  888. Tue May 22 17:20:33 1990  Karl Berry  (karl at hayley)
  889.  
  890.         * main.c (read_command_line): add `-verbose', a synonym for `-v'.
  891.  
  892. Sun May 20 08:44:17 1990  Karl Berry  (karl at hayley)
  893.  
  894.         * fit.c (find_subdivision): new routine to look for the best place
  895.         to subdivide.
  896.         (subdivide_search, subdivide_surround, subdivide_threshold): new
  897.         variables to control it.
  898.         * fit.h (same): declare them.
  899.         * main.c (read_command_line): new options to set them.
  900.  
  901.         * curve.c (log_curve): do not print the next and previous curves
  902.         in the list, since usually they're zero.
  903.  
  904. Sat May 19 15:42:44 1990  Karl Berry  (karl at hayley)
  905.  
  906.         * postscript.c (encoding): eliminate this routine; just use the
  907.         array directly.
  908.  
  909.         * postscript.c (find_ps_info, ps_init_encoding): look up the files
  910.         using a path, instead of assuming the current directory.
  911.  
  912. Tue May 15 06:55:03 1990  Karl Berry  (karl at hayley)
  913.  
  914.         * fit.c (fit_with_least_squares): reparameterize until it doesn't
  915.         help, and go back to the best fitting spline when we finally exit.
  916.  
  917.         * metafont.c (mf_start_output): initialize the designsize and u#
  918.         for 72pt type.
  919.  
  920.         * postscript.c (ps_start_output): don't use font_name_subptr
  921.         before it's been set.
  922.  
  923.     * display.c (real_cartesian_to_offset_x): new routine.
  924.         (x_output_char, digitize_spline): call it.
  925.  
  926.     * display.c (digitize_spline): make delta depend on the length of
  927.     spline.
  928.  
  929.     * fit.c (find_error): return the worst error, instead of the total
  930.     error.
  931.  
  932.     * fit.c (fit_with_line): report an `l'.
  933.  
  934.     * fit.c (fit_with_least_squares): don't return null if
  935.     reparameterization makes the fit worse, and put the information in
  936.     the log file, instead of on the terminal.
  937.  
  938. Sat May 12 08:42:44 1990  Karl Berry  (karl at hayley)
  939.  
  940.     * postscript.h (ps_flush_output): declare a new routine.
  941.         * postscript.c (ps_flush_output): define it.
  942.         * metafont.[ch] (mf_flush_output): ditto.
  943.         * report.[ch] (flush_log_output): ditto.
  944.         * main.c (main): flush the output files before doing
  945.         x_output_char.
  946.  
  947.     * postscript.c (font_bb): make it static.
  948.  
  949.     * fit.c (find_error): don't take the square and square root of the
  950.         error, since we already computed the error as the Euclidean
  951.         distance.
  952.  
  953.     * fit.c (find_error): log the total error.
  954.  
  955.     * curve.c (log_curve): print tangents correctly.
  956.  
  957.     * vector.h (Vadd_int_point, IPsubtractP, IPadd, IPmult_scalar,
  958.     IPmult_real, IPequal): a bunch of new routines.
  959.         * vector.c (...): define them.
  960.         * display.c (digitize_spline): show the splines online.
  961.         (x_output_char): call it.
  962.  
  963. Tue May  8 12:09:18 1990  Karl Berry  (karl at hayley)
  964.  
  965.     * display.c (x_output_char): don't print a newline before the
  966.     prompt if not verbose.
  967.  
  968.     * fit.c (filter_secondary_surround): new global for number of
  969.     points to look at when we find a straight line.
  970.         (filter): use it.
  971.         (find_curve_vectors): take an argument for the number of points to
  972.         look at.
  973.         * fit.h (filter_secondary_surround): declare it.
  974.         * main.c (read_command_line): add the option.
  975.         
  976.     * vector.c: doc fix.
  977.  
  978. Mon May  7 07:52:19 1990  Karl Berry  (karl at hayley)
  979.  
  980.     * fit.c: remove all the `join' stuff; we're better off just
  981.         sticking with angles.
  982.         * main.c (read_command_line): likewise.
  983.  
  984.     * fit.c (find_corners): only append to the `equally_good' list if
  985.         we haven't wrapped around.
  986.  
  987.     * fit.c (find_curve_vectors): look at `filter_surround' points,
  988.         not `corner_surround'.
  989.         (filter_surround): new global.
  990.         * main.c (read_command_line): new option to set it.
  991.  
  992.     * curve.h (curve): make the `length' member be int, not unsigned,
  993.         since sometimes we subtract one from it.
  994.  
  995.     * fit.c (remove_knee_points): use NEXT_CURVE and LAST_CURVE, and
  996.         look at the first and last points if the curve is cyclic.
  997.  
  998.     * fit.c (filter): forget all the distance stuff; that had too big
  999.         an effect.  Use the vectors, instead.
  1000.  
  1001.     * fit.c (filter): filter the first and last points, too, if the
  1002.         curve is cyclic.
  1003.  
  1004.     * fit.c (filter): put the filtered point into the curve.
  1005.  
  1006.     * fit.c (find_curve_vectors): return the number of points used to
  1007.         compute the vectors, as well as the vectors.  And change callers.
  1008.  
  1009.     * fit.c (filter): make the percentage inversely proportional to
  1010.         the distance, not directly proportional.
  1011.  
  1012.     * curve.c (log_curve): print out all the information, not just the
  1013.         points.
  1014.  
  1015.     * curve.c (append_pixel): use `LAST_CURVE_POINT'.
  1016.  
  1017.     * curve.c (init_curve): call `new_curve'.
  1018.  
  1019.     * fit.c (remove_knee_points): call `copy_most_of_curve', so that
  1020.         we don't lose the next/previous/cyclic elements.
  1021.         * curve.c (copy_most_of_curve): define it.
  1022.         * curve.h (copy_most_of_curve): declare it.
  1023.  
  1024.     * fit.c (find_curve_vectors): don't do the next/previous on the
  1025.         original point as we update the loop.
  1026.         (filter): likewise.
  1027.  
  1028. Sun May  6 11:53:20 1990  Karl Berry  (karl at hayley)
  1029.  
  1030.     * curve.h (curve): new member, `cyclic'.
  1031.         (CURVE_LENGTH): new accessor macro.
  1032.         (CURVE_NEXT, CURVE_PREV): use it to figure out what the adjacent
  1033.         points are.
  1034.         * curve.c (new_curve): initialize it to false.
  1035.         * fit.c (split_at_corners): set it to true if we didn't find any
  1036.         corners.
  1037.         (filter): loop using CURVE_NEXT and CURVE_PREV.
  1038.  
  1039.     * fit.c (filter): look at `corner_surround' neighbors, not just
  1040.         one; use distances to compute contributions.
  1041.         (SMOOTH): #if 0 it.
  1042.  
  1043.     * vector.c (Vadd_point): switch the point arg and the vector arg,
  1044.         for consistency.  (And change callers everywhere.)
  1045.         * vector.h (Vadd_point): change declaration.
  1046.  
  1047.     * fit.c (find_curve_vectors, find_vectors): rearrange the
  1048.         conditions.
  1049.  
  1050.     * postscript.c (ps_start_output): put the copyleft in the output
  1051.         file.
  1052.  
  1053.     * postscript.c (PS_OUT_...): forget the PS_ prefix.
  1054.         * metafont.c (MF...): likewise.
  1055.  
  1056. Thu May  3 08:07:54 1990  Karl Berry  (karl at hayley)
  1057.  
  1058.     * main.h (version_string): move this declaration to main.c.
  1059.  
  1060.     * main.c (found_first_char): remove this (unused) variable.
  1061.  
  1062. Tue May  1 09:13:53 1990  Karl Berry  (karl at hayley)
  1063.  
  1064.     * fit.c (find_curve_angle): use Vangle.
  1065.  
  1066.     * main.c (USAGE): doc fix.
  1067.  
  1068.     * fit.c (free_index_list): new routine.
  1069.  
  1070.     * fit.c (find_corners): keep track of all corners that are equally
  1071.         good, instead of just the first.
  1072.  
  1073. Mon Apr 30 07:24:48 1990  Karl Berry  (karl at hayley)
  1074.  
  1075.     * metafont.c (MF_OUT_POINT): multiply the coordinates by u#.
  1076.         [whoops, make that u.]
  1077.  
  1078.     * display.c (x_output_char): display the control points of the
  1079.         splines.
  1080.         (display_subdivision): use XDrawArc instead of XFillArc.
  1081.         [rescind this; the display is too cluttered.]
  1082.  
  1083.     * fit.c (is_join_point): use `join_surround' instead of
  1084.         `corner_surround' for checking the length of the lines.
  1085.         * main.c (read_command_line): `join-surround' is a new option.
  1086.         * fit.h: declare it.
  1087.  
  1088.     * main.c (read_command_line): print the long usage message at
  1089.         -help (a new option) only.
  1090.  
  1091. Sun Apr 29 07:52:40 1990  Karl Berry  (karl at hayley)
  1092.  
  1093.     * fit.c (remove_knee_points): log the fact that no points were
  1094.         removed.
  1095.  
  1096.     * fit.c (is_join_point): rewrite; we can't just use precomputed
  1097.         vectors, we have to look at every point.
  1098.  
  1099.     * pxl-outline.h (O_NEXT, O_PREV): macros to find the next and
  1100.         previous indices in a pixel_outline.
  1101.         fit.c (find_vectors): use them.
  1102.  
  1103. Sat Apr 28 14:00:55 1990  Karl Berry  (karl at hayley)
  1104.  
  1105.     * fit.c (find_corners): also make join points corners.
  1106.         (find_angle): turned into `find_vectors', essentially, plus Vangle
  1107.         below.
  1108.         (is_join_point): new boolean function to test for a join point.
  1109.  
  1110.     * vector.c (Vangle): new routine to return the angle between two
  1111.     vectors.
  1112.         vector.h (Vangle): declare it.
  1113.  
  1114.     * vector.c (magnitude): use hypot(3M).
  1115.  
  1116. Fri Apr 27 06:46:11 1990  Karl Berry  (karl at hayley)
  1117.  
  1118.     * main.c (read_command_line): don't allow an empty font name.
  1119.  
  1120.     * main.c (main): only print the font comment if verbose.
  1121.  
  1122. Thu Apr 26 09:49:52 1990  Karl Berry  (karl at hayley)
  1123.  
  1124.     * fit.c (reparameterize): pass the right arguments to hypot.
  1125.  
  1126.     * fit.c (find_corners): tested `q' instead of `best_corner_index'
  1127.         when we got out of the loop, so points towards the end of the list
  1128.         didn't become corners.
  1129.  
  1130.     * pxl-outline.h (outline_pixel_type): delete this, since it just
  1131.         contains a coordinate.
  1132.         (O_PIXEL_X, O_PIXEL_Y): delete these, too.
  1133.         (O_LENGTH, O_LIST_OUTLINE, O_LIST_LENGTH): new accessor macros.
  1134.         Change references in fit.c and pxl-outline.c to use them.
  1135.  
  1136.     * display.c (x_output_char): start the lines in the middle of the
  1137.         rectangle.
  1138.  
  1139.     * fit.c (filter): make the amount of filtering dependent on the
  1140.     angle at the current point.
  1141.         (find_curve_angle): new routine to find the angle at a point on a
  1142.         curve.
  1143.  
  1144. Tue Apr 24 15:09:04 1990  Karl Berry  (karl at hayley)
  1145.  
  1146.     * pxl-outline.c (remove_knee_points): move to fit.c, and redo to
  1147.         take a curve, instead of a pixel_outline -- we have to find the
  1148.         corners before removing the knees.
  1149.  
  1150.     * curve.c (free_curve): don't make it static.
  1151.         curve.h: declare it.
  1152.  
  1153.     * display.c (real_cartesian_to_x): call real_to_int_coord, instead
  1154.         of doing it inline.
  1155.  
  1156.     * pxl-outline.c (find_one_outline): don't remove knees if
  1157.     `keep_knees' is true.
  1158.         pxl-outline.h: declare the variable.
  1159.         main.c (read_command_line): new option to set it.
  1160.  
  1161. Sun Apr 22 06:45:03 1990  Karl Berry  (karl at hayley)
  1162.  
  1163.     * pxl-outline.c (find_one_outline): free the old outline after
  1164.         removing knees.
  1165.  
  1166.     * display.c (display_subdivision): don't synchronize the connection.
  1167.  
  1168.     * pxl-outline.c (remove_knee_points): log the points that get removed.
  1169.  
  1170. Sat Apr 21 09:30:17 1990  Karl Berry  (karl at hayley)
  1171.  
  1172.     * pxl-outline.c (remove_knee_points): new routine that cleans up
  1173.         the pixel list we return.
  1174.         (find_one_outline): call it.
  1175.         (append_outline_pixel): new routine that just appends a given
  1176.         coordinate to the list.
  1177.         (append_coordinate): call it.
  1178.  
  1179.     * pxl-outline.c (find_one_outline): eliminate `previous_row' and
  1180.         `previous_col' variables.
  1181.  
  1182.     * pxl-outline.c (find_outline_pixels): print . on stdout after
  1183.         finding each outline.
  1184.  
  1185.     * display.c (display_corner): don't synchronize the connection.
  1186.  
  1187. Fri Apr 20 16:24:11 1990  Karl Berry  (karl at hayley)
  1188.  
  1189.     * main.c (read_command_line): +display-stop doesn't take an argument.
  1190.  
  1191.     * display.c (real_cartesian_to_x): do not round until after the
  1192.         multiplications.
  1193.  
  1194.     * display.c (display_pixel): take a real point, instead of an
  1195.         integer one.
  1196.         display.h (display_pixel): declare it that way.
  1197.  
  1198.     * curve.c (display_curve): new routine for online output.
  1199.         curve.h: declare it.
  1200.         fit.c (filter): call it, after filtering.
  1201.  
  1202.     * pxl-outline.c (find_one_outline): eliminate the variable
  1203.     `starting_edge'.
  1204.  
  1205. Thu Apr 19 16:07:35 1990  Karl Berry  (karl at hayley)
  1206.  
  1207.     * main.c (read_command_line): call getopt_long_only instead of getopt.
  1208.  
  1209.     * postscript.c (ps_start_output): doc fix (in generated font).
  1210.  
  1211. Tue Apr 17 07:50:33 1990  Karl Berry  (karl at hayley)
  1212.  
  1213.     * pxl-outline.c (free_pixel_outline_list): new routine.
  1214.         pxl-outline.h: declare it.
  1215.         main.c (main): call it.
  1216.  
  1217.     * display.c (x_output_char): only wait for a return if
  1218.         display_stop is set.
  1219.         main.c (read_command_line): new argument `+display-stop', for the
  1220.         above switch.
  1221.  
  1222.     * main.c (main): display the comment in the font, if it's non-null.
  1223.  
  1224.     * fit.c (split_at_corners): do not just ignore pixel outlines with
  1225.         fewer pixels than corner_surround * 2 + 2.
  1226.  
  1227. Mon Apr 16 07:57:32 1990  Karl Berry  (karl at hayley)
  1228.  
  1229.     * display.c: make the allocations for the descenders and the
  1230.         negative x-coordinate pixels be variables.
  1231.         main.c (read_command_line): define new options to set those
  1232.         variables, and a macro GET_PERCENT to read the values.
  1233.  
  1234.     * postscript.c (ps_start_output, start_chars): fix indentation
  1235.         problems in the generated PostScript.
  1236.  
  1237.     * main.c (read_command_line): set _getopt_long_only to 1.
  1238.  
  1239.     * display.c (x_start_char): set the LineWidth to 1 at the end.
  1240.         (x_output_char): don't set the LineWidth.
  1241.         [Whoops, forgot that that affects the rectangles. Change it back.]
  1242.  
  1243.     * main.c (main): call init_display with all of f, not the font
  1244.         bounding box.
  1245.         display.h (init_display): change declaration.
  1246.         display.c (x_init_display): base the size of the window on the
  1247.         design size, instead of the font bounding box.
  1248.  
  1249.     * postscript.c: new static variable, `font_bb', to accumulate the
  1250.     font's bounding box.
  1251.         (ps_start_output): initialize font_bb, but don't output anything.
  1252.         (ps_output_char): update font_bb.
  1253.         (ps_finish_output): output it.
  1254.         main.c (main): don't do anything with the font bounding box.
  1255.  
  1256. Fri Apr 13 20:02:28 1990  Karl Berry  (karl at hayley)
  1257.  
  1258.     * main.c (main): if the character isn't in the font, don't try to
  1259.     fit it!
  1260.  
  1261. Thu Apr 12 20:43:40 1990  Karl Berry  (karl at hayley)
  1262.  
  1263.     * fit.c (set_initial_parameter_values, find_error): pass the right
  1264.     kind of arguments to hypot(3M).
  1265.  
  1266.     * fit.c (fit_splines): do not try to fit curves with one point.
  1267.  
  1268. Tue Apr 10 07:36:06 1990  Karl Berry  (karl at hayley)
  1269.  
  1270.     * main.c, postscript.c, postscript.h: rename the postscript_...
  1271.     routines to ps_...
  1272.  
  1273. Mon Apr  9 10:01:59 1990  Karl Berry  (karl at hayley)
  1274.  
  1275.     * main.c (main): use char_info_type instead of gf_char_type
  1276.     directly.  (And this same change throughout the output routines.)
  1277.  
  1278.     * fit.c (set_initial_parameter_values, reparameterize,
  1279.     find_error): replace calls to `distance' with calls to `hypot'.
  1280.  
  1281. Thu Apr  5 14:46:24 1990  Karl Berry  (karl at hayley)
  1282.  
  1283.     * main.c (main, read_command_line): open the log file in the
  1284.     former instead of the latter.
  1285.  
  1286. Wed Apr  4 17:01:54 1990  Karl Berry  (karl at aten)
  1287.  
  1288.     * display.c: R4 wants <X11/Xaw/Simple.h>, and R3 wants just
  1289.     <X11/Simple.h>, so conditionalize.
  1290.  
  1291. Sat Mar 31 08:45:56 1990  Karl Berry  (karl at hayley)
  1292.  
  1293.     * display.c (x_start_char): wait for the user to hit return before
  1294.     clearing the window (if this isn't the first call).
  1295.  
  1296. Fri Mar 30 14:46:05 1990  Karl Berry  (karl at hayley)
  1297.  
  1298.     * postscript.c (find_postscript_info): ended up with
  1299.     standard.enc.enc for the encoding name if the info wasn't found.
  1300.  
  1301. Wed Mar 21 08:31:34 1990  Karl Berry  (karl at hayley)
  1302.  
  1303.     * fit.c (find_corners): don't append a corner if we've wrapped
  1304.         around in the search; rearrange the loop so that the first
  1305.         candidate is appended if its angle is less than
  1306.         corner_always_threshold.
  1307.  
  1308.     * fit.c (filter): if the curve has fewer than three points, don't
  1309.         bother filtering it.
  1310.  
  1311.     * main.c (read_command_line): add new argument,
  1312.         `corner-always-threshold'.
  1313.         fit.c: define `corner_always_threshold' variable (and declare it
  1314.         in fit.h).
  1315.         (find_corners): if the angle is less than corner_always_threshold,
  1316.         append it to the corner_list.
  1317.  
  1318.     * main.c (read_command_line): delete the
  1319.     corner-secondary-threshold argument.
  1320.         pxl-outline.h (outline_pixel_type): delete the is_corner_pixel
  1321.         member.
  1322.         pxl-outline.c (find_one_outline): remove code dealing with corner
  1323.         pixels.
  1324.         (next_outline_edge): don't return a corner pixel.
  1325.         fit.c: delete the `corner_secondary_threshold' variable.
  1326.         (find_corners): remove tests for corner pixels.
  1327.         (find_angle): remove code dealing with corner pixels.
  1328.  
  1329.     * display.c (start_display_char): offset the horizontal grid lines
  1330.     by one, to counteract the X origin being at the upper left.
  1331.  
  1332. Tue Mar 20 11:34:44 1990  Karl Berry  (karl at hayley)
  1333.  
  1334.     * display.c (real_cartesian_to_x): rounds its argument, then does
  1335.         cartesian_to_x. 
  1336.  
  1337.     * display.c (x_output_char): new routine to show the fitted result.
  1338.         display.h (x_output_char): define it.
  1339.         main.c (main): call it.
  1340.  
  1341.     * display.c (display_subdivision): draw a circle at the
  1342.         subdivision points.
  1343.         fit.c (fit_with_least_squares): call display_subdivision when we
  1344.         subdivide.
  1345.  
  1346.     * display.c (start_display_char): draw a grid to show the
  1347.     coordinates of the character.
  1348.         (GRID_INTERVAL): distance between lines.
  1349.         (segment_to_x): convert an XSegment from Cartesian to X
  1350.         coordinates.
  1351.         
  1352.  
  1353. Mon Mar 19 12:28:35 1990  Karl Berry  (karl at hayley)
  1354.  
  1355.     * display.c (cartesian_to_x): take the x- and y-offsets into
  1356.         account when computing the X coordinate.
  1357.  
  1358.     * display.c (init_display): simplify things: override the width
  1359.     and height based on the font bounding box; use the default GC
  1360.     instead of trying to figure out what the foreground and background
  1361.     are; pass in a fake argc and argv (again).
  1362.         main.c (main): don't pass argc and argv to init_display.
  1363.  
  1364. Sun Mar 18 12:30:53 1990  Kathy Hargreaves  (kathy at hayley)
  1365.  
  1366.     * postscript.c (postscript_start_output): implement usual
  1367.     convention for adding `Oblique' to font names.
  1368.  
  1369. Sat Mar 17 07:09:42 1990  Karl Berry  (karl at hayley)
  1370.  
  1371.     * postscript.c (postscript_start_output): append `_o' to the
  1372.     output file name if it's oblique, and `-Oblique' to the PostScript
  1373.     font name.
  1374.  
  1375.     * postscript.c (find_postscript_info): reversed sense of stopping
  1376.     condition for reading the file.
  1377.  
  1378. Fri Mar 16 15:37:02 1990  Karl Berry  (karl at hayley)
  1379.  
  1380.     * postscript.c (postscript_start_output, find_postscript_info,
  1381.         postscript_init_encoding): allow the PostScript font name to be
  1382.         specified in a file, and put the encoding name there, also.
  1383.  
  1384.     * postscript.c (postscript_start_output): the KKBuildChar is now
  1385.         in KKBuildChar.PS.
  1386.  
  1387.     * main.c (read_command_line): convert the oblique_angle to radians.
  1388.  
  1389.     * postscript.c (postscript_output_splines): forgot an argument to
  1390.         fatal.
  1391.  
  1392.     * spline.h: declare append_spline, which appends a single spline
  1393.         to an existing list.
  1394.         spline.c: define it.
  1395.  
  1396.     * oblique.[ch]: new files to support slanting the characters.
  1397.         main.c (main): call oblique_splines.
  1398.         main.c (read_command_line): new argument, oblique-angle <degrees>.
  1399.  
  1400.     * display.c (display_corner): XSync after displaying the corner,
  1401.         so we aren't forced to look at a partially done character.
  1402.  
  1403.     * display.c (everything): check if wants_display is true before
  1404.     doing anything.
  1405.         
  1406.  
  1407. Mon Mar 12 15:28:49 1990  Karl Berry  (karl at hayley)
  1408.  
  1409.     * display.c (init_display), main.c (main): no, rescind that
  1410.         change, without the real argc and argv the XtGetValues function
  1411.         bombs out.
  1412.  
  1413.     * main.c (main): call start_display_char on every character.  
  1414.         Don't send argv and argc to init_display.
  1415.     display.c (start_display_char): new routine to clear window and
  1416.         synchronize connection.
  1417.         (init_display): don't expect argc and argv.
  1418.  
  1419.     * pxl-outline.c (append_coordinate): don't ever subtract from the
  1420.         coordinate we're given.
  1421.  
  1422. Sun Mar 11 11:45:55 1990  Karl Berry  (karl at hayley)
  1423.  
  1424.     * display.c, display.h: new files to output the pixel outline and
  1425.         corners to an X window.
  1426.         main.c (main): call init_display and close_display.
  1427.         pxl-outline.c (display_outline_list): call display_pixel on each
  1428.         coordinate we have in the outline.
  1429.         (find_outline_pixels): call display_outline_list.
  1430.         fit.c (find_corners): call display_corner.
  1431.  
  1432.     * fit.c (fit_with_line): log the line.  Also, set the control
  1433.         points, in case it gets changed to a cubic.
  1434.  
  1435.     * postscript.c (postscript_output_splines): make sure the spline
  1436.         degree is a valid one.
  1437.  
  1438.     * pxl-outline.c (append_coordinate): take the edge as a parameter,
  1439.     and append a Cartesian coordinate instead of a pixel coordinate.
  1440.         (find_one_outline): call it with the current edge.
  1441.  
  1442. Sat Mar 10 10:52:28 1990  Karl Berry  (karl at hayley)
  1443.  
  1444.     * main.c (read_command_line): exit if we get an unrecognized
  1445.         option, instead of continuing.
  1446.  
  1447.     * postscript.c (postscript_output_chars_encoding): don't share the
  1448.         value of StandardEncoding (which should be a readonly object).
  1449.  
  1450.     * postscript.c (postscript_start_output): use the standard
  1451.         encoding if we don't find the font in the encoding map file.
  1452.  
  1453.     * main.c (main): only free the GF bitmap if it isn't null.
  1454.  
  1455.     * pxl-outline.c (SET_CORNER_PIXEL): new macro that checks if the
  1456.         pixel is black before setting *corner_pixel.
  1457.         (next_outline_edge): call the macro instead of just assigning.
  1458.  
  1459.     * fit.c (fit_with_line): new routine to fit a small curve with a
  1460.         line.
  1461.         (fit_splines): call fit_with_line if the curve is small enough.
  1462.  
  1463.     * *.h: add #pragma once.
  1464.  
  1465. Fri Mar  9 11:04:37 1990  Karl Berry  (karl at hayley)
  1466.  
  1467.     * build-char.PS: name the BuildChar routine KKCharBuilder instead
  1468.     of just CharBuilder, since dvips has usurped the latter.
  1469.         postscript.c (postscript_finish_output): use the new name.
  1470.  
  1471.     * pxl-outline.c (find_one_outline): only exit the loop if we are
  1472.     not at the original edge.  Otherwise, a solitary pixel on top of a
  1473.     row causes a premature exit.
  1474.  
  1475. Thu Feb  8 11:34:52 1990  Karl Berry  (karl at hayley)
  1476.  
  1477.     * metafont.[ch]: new files for Metafont output.
  1478.         (main.c): call the new routines.
  1479.  
  1480. Wed Feb  7 17:08:05 1990  Karl Berry  (karl at hayley)
  1481.  
  1482.     * postscript.c (strip_trailing_numbers): delete this; we can use
  1483.         strtok(3).
  1484.  
  1485.     * postscript.c (postscript_start_output): we don't need to pass
  1486.         the design size, we can get it from the TFM file.
  1487.         postscript.h (postscript_start_output): change the declaration.
  1488.         main.c (main): change the call.
  1489.  
  1490.     * postscript.c (postscript_init_encoding): change
  1491.     `mapping_filename' to `ENCODING_MAP_FILENAME'.
  1492.         (postscript_start_output): fix up the initial comment a bit.
  1493.  
  1494. Tue Jan 30 10:31:18 1990  Karl Berry  (karl at hayley)
  1495.  
  1496.     * fit.c (spline_linear_enough): forgot a minus sign in the
  1497.         vertical line case.
  1498.  
  1499.     * postscript.c (postscript_output_splines): add the lsb to each
  1500.         x-coordinate, so we stay in the bounding box.
  1501.         (postscript_output_char_proc): pass the lsb in.
  1502.  
  1503.     * fit.c (find_error): don't dereference worst_point if the fit was
  1504.         perfect, since it won't have been set.
  1505.  
  1506.     * report.h (log[1234], report[1234]): swallow a trailing semicolon.
  1507.  
  1508.     * postscript.c (postscript_finish_output): output a `pop' after
  1509.     the definefont.
  1510.     (ps_output_real): only output three places after
  1511.     the decimal point.
  1512.         (postscript_start_output): write a header identifying the font and
  1513.         its origin to the PS file.
  1514.         
  1515. Mon Jan 29 15:54:07 1990  Karl Berry  (karl at hayley)
  1516.  
  1517.     * pxl_outline.[ch]: rename to pxl-outline.[ch].
  1518.  
  1519.     * Makefile: rename to GNUmakefile, and remove commandline.[ch].
  1520.  
  1521.     * main.c (read_command_line): convert for use with getopt.
  1522.  
  1523. Sun Nov 12 08:24:42 1989  Karl Berry  (karl at hayley)
  1524.  
  1525.     * fit.c (fit_with_least_squares): change_bad_lines on the
  1526.         concatenation of the left and right spline lists, not separately.
  1527.  
  1528.     * fit.c (find_error): log the worst error and worst point.
  1529.  
  1530.     * curve.h (curve): new members, `start_tangent and `end_tangent'.
  1531.         (CURVE_START_TANGENT, CURVE_END_TANGENT): macros to access them.
  1532.         curve.c (new_curve): make the tangents NULL to begin with.
  1533.         fit.c (find_tangent): check if the tangent is already computed,
  1534.         and if not, put the result in the appropriate member of the curve,
  1535.         instead of returning it.
  1536.         (fit_with_least_squares): remove tangents from parameter list.
  1537.         When subdividing, copy the tangents from the outer curve to the
  1538.         subdivided portions.
  1539.         (fit_one_spline): remove tangents from parameter list.
  1540.         
  1541. Sat Nov 11 15:57:16 1989  Karl Berry  (karl at hayley)
  1542.  
  1543.     * fit.c (change_bad_lines): new function to change lines back to
  1544.     cubics if they are a piece of a curve that has a cubic in it.
  1545.         (fit_with_least_squares): call change_bad_lines after subdividing.
  1546.  
  1547.     * fit.c (spline_linear_enough): divide by the length of the line.
  1548.  
  1549.     * postscript.c (postscript_output_splines): remove logging info.
  1550.  
  1551. Fri Nov 10 21:28:07 1989  Karl Berry  (karl at hayley)
  1552.  
  1553.     * spline.h (spline_type): include the degree as a member.
  1554.         (polynomial_degree): new enumerated type.
  1555.         spline.c (evaluate_spline): doesn't need the degree as a separate
  1556.         argument any more.
  1557.         postscript.c (spline_almost_linear): delete.
  1558.         (line_threshold): move to fit.c.
  1559.         fit.c (fit_with_least_squares): check if the spline can become a line.
  1560.         (spline_linear_enough): routine that does that.
  1561.         (fit_one_spline, reparameterize): assign to the degree of 
  1562.         splines when they are constructed.
  1563.  
  1564. Tue Nov  7 10:51:06 1989  Karl Berry  (karl at hayley)
  1565.  
  1566.     * pxl_outline.h (coordinate_list_type): change name to
  1567.         pixel_outline_type, and make it a list of outline_pixel_types.
  1568.         (outline_pixel_type, O_PIXEL_X, O_PIXEL_Y, O_PIXEL_CORNER): new
  1569.         type and macros to access it.
  1570.         pxl_outline.c (append_coordinate): takes another arg, says whether
  1571.         the pixel is a `potential corner' one.
  1572.         (find_one_outline): change to the new names; call
  1573.         append_coordinate with the new arg.
  1574.         (new_coordinate_list): change name to new_pixel_outline.
  1575.         fit.c (split_at_corners): only append pixels to the curve if they
  1576.         are not potential corners.
  1577.         (find_corners): change names.
  1578.         (find_angle): ignore pixels that are potential corners.
  1579.  
  1580.     * fit.c (fit_with_least_squares): log the improvement in the error.
  1581.  
  1582.     * fit.c (find_corners): was using corner_surround+1 pixels for
  1583.         computing in_vector.
  1584.  
  1585.     * fit.c, fit.h: delete reparameterize_iteration_max.
  1586.         (fit_with_least_squares): take out test on above.
  1587.         commandline.c (read_command_line): take out option for above.
  1588.  
  1589.     * fit.c (fit_with_least_squares): stop reparameterizing if
  1590.         improvement is less than reparameterize_improvement.
  1591.         (reparameterize_improvement): new global.
  1592.         (reparameterize_iteration_max): default now 10.
  1593.         fit.h: declare reparameterize_improvement.
  1594.     commandline.c (read_command_line): new option,
  1595.         -reparameterize-improve.
  1596.         
  1597.     * fit.c: don't log values of alpha1 and alpha2.
  1598.  
  1599.     * fit.c: change default value of error_threshold to 2.0.
  1600.  
  1601.     * postscript.c: change default value of line_threshold to 3.0.
  1602.  
  1603. Sun Nov  5 08:00:38 1989  Karl Berry  (karl at hayley)
  1604.  
  1605.     * curve.c (log_curve): test if logging is true.
  1606.         spline.c (log_spline): ditto.
  1607.         Also change calls to match in many files.
  1608.  
  1609.     * postscript.c (ps_output_command_6, ps_output_command_2,
  1610.         ps_output_line): swallow a trailing semicolon.
  1611.  
  1612.     * postscript.c (postscript_start_output): calculate the number of
  1613.     pixels in the design size (at the resolution of the input font),
  1614.     and use that for the FontMatrix.
  1615.  
  1616. Sat Nov  4 13:12:07 1989  Karl Berry  (karl at hayley)
  1617.  
  1618.     * fit.c (fit_with_least_squares): subdivide at the point of
  1619.         maximum error, instead of halfway.
  1620.         (find_error): return the point of maximum error, as well as the
  1621.         total error over the whole curve.
  1622.  
  1623.     * commandline.c (read_command_line): don't abort if -version was
  1624.         printed and no font name was given.
  1625.  
  1626.     * build_char.ps (CharBuilder): only define it if it's not defined
  1627.     already.  Also, rename the file to build_char.PS.
  1628.  
  1629.     * postscript.c (postscript_output_splines): add some logging
  1630.     information. 
  1631.         (postscript_start_output): output a call to `build_char.PS'
  1632.         instead of `.ps'.
  1633.  
  1634.     * fit.c (corner_surround): change default value to five.
  1635.  
  1636. Fri Nov  3 20:24:53 1989  Karl Berry  (karl at hayley)
  1637.  
  1638.     * postscript.c (postscript_start_output): output the font bounding
  1639.     box in Cartesian coordinates, not bitmap coordinates.
  1640.         On the other hand, output the font matrix based on the maximum
  1641.         width and height of the font bounding box, rather than the design
  1642.         size.
  1643.  
  1644.     * commandline.c (read_command_line): add -version option.
  1645.